﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WAVEZ
{
    class Personagem : Objeto3D
    {
        private bool moverX, moverZ;

        private float velocidadeMax, aceleracao, desaceleracao;

        public Personagem(Model modelo)
            : base(modelo)
        {
            moverX = false;
            moverZ = false;

            velocidadeMax = 0.7f;
            aceleracao = 0.04f;
            desaceleracao = 0.06f;
        }

        public override void Update(GameTime gameTime)
        {
            moverPersonagem();

            base.Update(gameTime);
        }

        private void moverPersonagem()
        {
            this.posicao += this.velocidade;

            if (Controller.KeyDown(Keys.Right))
            {
                this.velocidade.X = MathHelper.Lerp(this.velocidade.X, velocidadeMax, aceleracao);

                moverX = true;
            }

            if (Controller.KeyDown(Keys.Left))
            {
                this.velocidade.X = MathHelper.Lerp(this.velocidade.X, -velocidadeMax, aceleracao);

                moverX = true;
            }



            if (Controller.KeyDown(Keys.Up))
            {
                this.velocidade.Z = MathHelper.Lerp(this.velocidade.Z, -velocidadeMax, aceleracao);

                moverZ = true;
            }

            if (Controller.KeyDown(Keys.Down))
            {
                this.velocidade.Z = MathHelper.Lerp(this.velocidade.Z, velocidadeMax, aceleracao);

                moverZ = true;
            }




            if ((!Controller.KeyDown(Keys.Right)) && (!Controller.KeyDown(Keys.Left)))
            {
                moverX = false;
            }

            if (moverX == false)
            {
                this.velocidade.X = MathHelper.Lerp(this.velocidade.X, 0, desaceleracao);
            }

            if ((!Controller.KeyDown(Keys.Up)) && (!Controller.KeyDown(Keys.Down)))
            {
                moverZ = false;
            }

            if (moverZ == false)
            {
                this.velocidade.Z = MathHelper.Lerp(this.velocidade.Z, 0, desaceleracao);
            }

        }
    }
}
